package com.hns.can.service.service;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.hns.can.common.formula.FillCodeDscValue;
import com.hns.can.service.entity.AppCarOnlineDetailEntity;
import com.hns.can.service.entity.BsDayCarOnlineInfoEntity;
import com.hns.can.service.vo.DeviceChartVo;
import com.hns.can.service.vo.OffLineDetailedVo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.hns.can.common.aop.orgTree.LeftOrgAnnotation;
import com.hns.can.common.vo.CommonParamsVo;
import com.hns.frame.mybatis.Pagination;
import com.hns.frame.service.CommonService;
import com.hns.tool.pub.PubUtil;

/**
 * @版权：HNS 版权所有 (c) 2013
 * @author:zhangy
 * @version Revision 1.0.0
 * @email:zhangyu2222z@sina.cn
 * @see:
 * @创建日期：2015年7月27日
 * @功能说明：设备在线service
 * @begin
 * @修改记录:
 * @修改后版本          修改人      	修改内容
 * @2015年7月27日  	       zhangy       	创建
 * @end
 */
@Service
public class DeviceOnlineService extends CommonService {
	
	@Autowired
    private FillCodeDscValue codeDscValue;

	
	/**
	 * @param vo
	 * @return
	 * @throws Exception
	 * @author:zhangy
	 * @email:zhangyu2222z@sina.cn
	 * @创建日期:2015年7月27日
	 * @功能说明：查询设备在线
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	@LeftOrgAnnotation()
    @Transactional
	public Pagination getDeviceOnlineStatus(CommonParamsVo vo) throws Exception {
		Pagination page = this.myBatisPage("deviceOnline.getDeviceOnlineCount", "deviceOnline.getDeviceOnlineStatus", 
				vo, BsDayCarOnlineInfoEntity.class);
		return page;
	}
	
    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Transactional
    public List<DeviceChartVo> getDeviceOnlineDetail(CommonParamsVo vo) throws Exception {
		List<DeviceChartVo> list = PubUtil.convertListMapToObject(
            sqlMapDao.selectList("deviceOnline.getDeviceOnlineList", vo), DeviceChartVo.class);
		if(!PubUtil.isEmpty(list)){
			for(DeviceChartVo deviceChartVo:list){
				if(!PubUtil.isEmpty(deviceChartVo.getTask())){
					switch(deviceChartVo.getTask()){
					case "出场":
						deviceChartVo.setTask("2");
						break;
					case "入场":
						deviceChartVo.setTask("3");
						break;
					case "短线":
						deviceChartVo.setTask("4");
						break;
					case "区间":
						deviceChartVo.setTask("5");
						break;
					case "全程":
						deviceChartVo.setTask("6");
						break;
					case "复行":
						deviceChartVo.setTask("7");
						break;
					case "单班中停":
						deviceChartVo.setTask("8");
						break;
					}
				}
				
			}
		}
        return list;
    }
	
	/**
	 * @param vo
	 * @author:zhangy
	 * @email:zhangyu2222z@sina.cn
	 * @创建日期:2015年7月27日
	 * @功能说明：导出的设备在线数据
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@LeftOrgAnnotation()
    @Transactional
	public List<BsDayCarOnlineInfoEntity> getDeviceOlInfo(CommonParamsVo vo) throws Exception {
		List list = PubUtil.convertListMapToObject(
				sqlMapDao.selectList("deviceOnline.getDeviceOnlineStatus", vo), BsDayCarOnlineInfoEntity.class);
		return list;
	}

	/**
	 * @param vo
	 * @author:zhangy
	 * @email:zhangyu2222z@sina.cn
	 * @创建日期:2015年7月27日
	 * @功能说明：导出的设备在线明细数据
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Transactional
	public List<BsDayCarOnlineInfoEntity> exportOnlineAnalysis(CommonParamsVo vo) throws Exception {
		List list = PubUtil.convertListMapToObject(
				sqlMapDao.selectList("deviceOnline.exportOnlineAnalysis", vo), BsDayCarOnlineInfoEntity.class);
		return list;
	}
	
	/**
     * @param carId
     * @param rcrdDate
     * @author Chenl
     * @email:370238764@qq.com
     * @创建日期:2016年11月14日
     * @功能说明:设备离线率明细
     */
	public Pagination offLineRateDetailed(String carId,String rcrdDate){
    	Map<String,String> map = new HashMap<String,String>();
    	map.put("carId", carId);
    	map.put("rcrdDate", rcrdDate);
    	Pagination page = this.myBatisPage("deviceOnline.searchOffLineDetailedCount", "deviceOnline.searchOffLineDetailed", 
				map, OffLineDetailedVo.class);
		return page;
    }
}
